/* eslint-disable no-undef */
/**
 * @description: 打包JS
 * @version: 0.0.1
 * @author: xiech
 * @Date: 2023-06-26 14:39:17
 */
const fs = require('fs');
const archiver = require('archiver');
const execSync = require('child_process').execSync;

try {
  console.log('------------ 自动升级package.json版本号-start ------------');
  const packageJsonStr = fs.readFileSync('./package.json').toString();
  const packageJson = JSON.parse(packageJsonStr)
  // 升级版本号
  const arr = packageJson.version.split('.')
  if (arr[2] < 9) {
    arr[2] = +arr[2] + 1
  } else if (arr[1] < 9) {
    arr[1] = +arr[1] + 1
    arr[2] = 0
  } else {
    arr[0] = +arr[0] + 1
    arr[1] = 0
    arr[2] = 0
  }
  const newVersion = arr.join('.');
  packageJson.version = newVersion;
  fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, '\t'))
  // add new package.json
  // execSync(`git add package.json`);
  console.log('------------ 自动升级package.json版本号-end ------------');
  
  console.log('------------ 自动生成压缩包-start ------------');
  // 创建输出流，将 ZIP 文件写入指定路径
  const name = `./oa_midway_${newVersion}.zip`;
  const output = fs.createWriteStream(name);
  const archive = archiver('zip', {
    zlib: {
      level: 9
    } // 设置压缩级别
  });

  // 监听事件
  output.on('close', () => {
    console.log('ZIP 文件已成功创建,名称为: ' + name);
  });

  archive.on('error', err => {
    console.log('打包出现异常' + JSON.stringify(err));
  });

  // 添加文件或目录到 ZIP
  archive.file('package.json');
  archive.file('package-lock.json');
  archive.file('bootstrap.js');
  archive.directory('dist');
  archive.directory('html');
  archive.directory('tempfile');
  archive.directory('nginx');
  archive.directory('mf-auth');
  // 完成并关闭 ZIP
  archive.finalize();
  // 将输出流管道到输出文件
  archive.pipe(output);
  console.log('------------ 自动生成压缩包-end ------------');
} catch (e) {
  console.error('------------ 打包编译出错-error:', e.message);
  process.exit(1)
}
